package ar.uade.edu.fain.ad.server.business;

import ar.uade.edu.fain.ad.common.transfer.ItemOrdenCompraVO;
import ar.uade.edu.fain.ad.server.dao.entity.ItemOrdenCompraEntity;


public class ItemOrdenCompra  {
	
	private Long id;
	private Producto producto;
	private Integer cantidad;
	//private OrdenCompra ordenCompra;
	private Integer recibido;

	public ItemOrdenCompra() {
		super();
		this.cantidad = 0;
		this.recibido = 0;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Producto getProducto() {
		return producto;
	}

	public void setProducto(Producto producto) {
		this.producto = producto;
	}

	public Integer getCantidad() {
		return cantidad;
	}

	public void setCantidad(Integer cantidad) {
		this.cantidad = cantidad;
	}
	/*
	public OrdenCompra getOrdenCompra() {
		return ordenCompra;
	}
	
	public void setOrdenCompra(OrdenCompra ordenCompra) {
		this.ordenCompra = ordenCompra;
	}*/

	public Integer getRecibido() {
		return recibido;
	}
	
	public void setRecibido(Integer recibido) {
		this.recibido = recibido;
	}

	public void recibir(int cantidad) {
		this.recibido += cantidad;
	}
	
	public Integer getFaltante() {
		return getCantidad() - getRecibido();
	}
	
	public boolean hayFaltantes() {
		return getFaltante() != null && getFaltante() > 0;
	}
	
	public ItemOrdenCompraVO toVO() {
		final ItemOrdenCompraVO vo = new ItemOrdenCompraVO();	
		vo.setId(getId());
		vo.setCantidad(getCantidad());
		vo.setProducto(getProducto().toVO());
		return vo;
	}
	
	public static ItemOrdenCompraVO toVO(
			ItemOrdenCompraEntity itemOrdenCompra) {
		
		ItemOrdenCompraVO item = new ItemOrdenCompraVO();
		item.setCantidad(itemOrdenCompra.getCantidad());
		item.setId(itemOrdenCompra.getId());
		item.setProducto(Producto.toVO(itemOrdenCompra.getProducto()));
		
		return item;
	}
	
}
